import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Properties;
import java.util.Set;

import Mediadores.MediadorPrincipal;
import Metadatos.Metadatos;
import GUI.GUIPrincipal;

public class Main {
	
	private static Connection conexion(String driver, String url, String username, String password) {
		Connection conexion = null;
		// Load database driver if not already loaded.
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// Establish network connection to database.
		try {
			conexion = DriverManager.getConnection(url, username, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conexion;
	}
	
	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
//		String dirActual = System.getProperty("user.dir");
//		String dirArchivo = dirActual +"/usuario1.properties";
//		Properties file = new Properties();
//		FileInputStream in = new FileInputStream(dirArchivo);
//		file.load(in);
//		in.close();
//		
//		
//		String driver1 = file.getProperty("driver");
//		String url1 = file.getProperty("url") + file.getProperty("host") + file.getProperty("db");
//		String username1 = file.getProperty("usuario");
//		String password1 = file.getProperty("password");
//		
//		Connection conexion1 = conexion(driver1, url1, username1, password1);
//		dirArchivo = dirActual + "/usuario2.properties";
//		in = new FileInputStream(dirArchivo);
//		file.load(in);
//		in.close();
//		
//		String driver2 = file.getProperty("driver");
//		String url2 = file.getProperty("url") + file.getProperty("host") + file.getProperty("db");
//		String username2 = file.getProperty("usuario");
//		String password2 = file.getProperty("password");
//		
//		Connection conexion2 = conexion(driver2, url2, username2, password2);
//		
//		LinkedList <String> nombres = Metadatos.getNombresTablas(conexion2,null,null);
//		
//		for (int i=0; i<nombres.size();i++) {
//			System.out.println(nombres.get(i));
//		}
		
//		LinkedList <String[]> datosColumnas = Metadatos.getDatosColumnas(conexion2, "pertenece", null, null);
//		
//		for (int i=0; i<datosColumnas.size();i++) {
//			System.out.println(datosColumnas.get(i)[0]);
//			System.out.println(datosColumnas.get(i)[1]);
//			System.out.println(datosColumnas.get(i)[2]);
//			System.out.println();
//		}
		
//		LinkedList<String[]> claves = Metadatos.getClavesPrimarias(conexion1,"pertenece",null,null);
//		
//		for (int i=0; i<claves.size();i++) {
//			System.out.println(claves.get(i)[0]+ " - "+ claves.get(i)[1]);
//		}
		
//		LinkedList <String[]> clavesForaneas = Metadatos.getClavesForaneas(conexion1, "materia", null, null);
//		
//		for (int i=0; i<clavesForaneas.size();i++) {
//			System.out.println(clavesForaneas.get(i)[0] + " - " + clavesForaneas.get(i)[1]);
//		}
		
//		LinkedList <String> indices = Metadatos.getIndices(conexion2,"pertenece", null, null,false);
//		
//		for (int i=0; i<indices.size();i++) {
//			System.out.println(indices.get(i));
//		}
		
//		LinkedList <String> clavesUnicas = Metadatos.getIndices(conexion2,"pertenece", null, null,true);
//		
//		for (int i=0; i<clavesUnicas.size();i++) {
//			System.out.println(clavesUnicas.get(i));
//		}
		
//		LinkedList <String[]> triggers = Metadatos.nombresYCondTriggers(conexion1);
//		
//		for (int i=0; i<triggers.size();i++) {
//			System.out.println(triggers.get(i)[0]+" , "+triggers.get(i)[1]);
//		}

//		LinkedList nombresYArgs  = Metadatos.nombresYArgs(conexion1);
//		
//		for (int i=0; i<nombresYArgs.size();i++) {
//			String nombre =  (String)((Object[]) nombresYArgs.get(i))[0];
//			LinkedList <String> tipoArgs = (LinkedList<String>)((Object[]) nombresYArgs.get(i))[1];
//			LinkedList <String> argums = (LinkedList<String>)((Object[]) nombresYArgs.get(i))[2];
//			System.out.println(nombre+" , "+tipoArgs+" , "+argums);
//		}	
		
		new MediadorPrincipal();
		
	}
	
}







